package fr.afcepf.atod16.groupe1.projet2.entities;

import fr.afcepf.atod16.groupe1.projet2.enumerations.EtatLivraison;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 * L'entité commande
 * @author cedric
 */
@Entity
@Table(name = "commandes")
@NamedQueries({
    @NamedQuery(name="rechercherParIdSite", query="select c from CommandeStock c where c.idSite = :idSite")
})
public class CommandeStock implements Serializable, Entite {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name="id")
    private Integer id;
    @Column(name="date_creation", nullable = false)
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dateCreation;
    @Column(name="date_livraison")
    @Temporal(javax.persistence.TemporalType.DATE)
    private Date dateLivraison;
    @Column(name="civilite_livraison", length = 16, nullable = false)
    private String civiliteLivraison;
    @Column(name="nom_livraison", length = 100, nullable = false)
    private String nomLivraison;
    @Column(name="prenom_livraison", length = 100, nullable = false)
    private String prenomLivraison;
    @Column(name="adresse_livraison", nullable = false)
    private String adresseLivraison;
    @Column(name="code_postal_livraison", length = 5, nullable = false)
    private String codePostalLivraison;
    @Column(name="ville_livraison", length = 100, nullable = false)
    private String villeLivraison;
    @Column(name="tel_fixe_livraison", length = 16)
    private String telFixeLivraison;
    @Column(name="tel_mobile_livraison", length = 16)
    private String telMobileLivraison;
    @Enumerated(EnumType.STRING)
    @Column(name="etat_livraison", nullable = false, length = 30)
    private EtatLivraison etatLivraison;
    @Column(name="mode_livraison", length = 16, nullable = false)
    private String modeLivraison;
    @Column(name="id_site", nullable = false)
    private Integer idSite;
    @OneToMany
    @JoinColumn(name = "commande_id", nullable = false)
    private List<LigneCommandeStock> lignes;

    public CommandeStock() {
    }

    public CommandeStock(Integer id, Date dateCreation, Date dateLivraison, String civiliteLivraison, String nomLivraison, String prenomLivraison, String adresseLivraison, String codePostalLivraison, String villeLivraison, String telFixeLivraison, String telMobileLivraison, EtatLivraison etatLivraison, String modeLivraison, Integer idSite, List<LigneCommandeStock> lignes) {
        this.id = id;
        this.dateCreation = dateCreation;
        this.dateLivraison = dateLivraison;
        this.civiliteLivraison = civiliteLivraison;
        this.nomLivraison = nomLivraison;
        this.prenomLivraison = prenomLivraison;
        this.adresseLivraison = adresseLivraison;
        this.codePostalLivraison = codePostalLivraison;
        this.villeLivraison = villeLivraison;
        this.telFixeLivraison = telFixeLivraison;
        this.telMobileLivraison = telMobileLivraison;
        this.etatLivraison = etatLivraison;
        this.modeLivraison = modeLivraison;
        this.idSite = idSite;
        this.lignes = lignes;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Date getDateCreation() {
        return dateCreation;
    }

    public void setDateCreation(Date dateCreation) {
        this.dateCreation = dateCreation;
    }

    public Date getDateLivraison() {
        return dateLivraison;
    }

    public void setDateLivraison(Date dateLivraison) {
        this.dateLivraison = dateLivraison;
    }

    public String getCiviliteLivraison() {
        return civiliteLivraison;
    }

    public void setCiviliteLivraison(String civiliteLivraison) {
        this.civiliteLivraison = civiliteLivraison;
    }

    public String getNomLivraison() {
        return nomLivraison;
    }

    public void setNomLivraison(String nomLivraison) {
        this.nomLivraison = nomLivraison;
    }

    public String getPrenomLivraison() {
        return prenomLivraison;
    }

    public void setPrenomLivraison(String prenomLivraison) {
        this.prenomLivraison = prenomLivraison;
    }

    public String getAdresseLivraison() {
        return adresseLivraison;
    }

    public void setAdresseLivraison(String adresseLivraison) {
        this.adresseLivraison = adresseLivraison;
    }

    public String getCodePostalLivraison() {
        return codePostalLivraison;
    }

    public void setCodePostalLivraison(String codePostalLivraison) {
        this.codePostalLivraison = codePostalLivraison;
    }

    public String getVilleLivraison() {
        return villeLivraison;
    }

    public void setVilleLivraison(String villeLivraison) {
        this.villeLivraison = villeLivraison;
    }

    public String getTelFixeLivraison() {
        return telFixeLivraison;
    }

    public void setTelFixeLivraison(String telFixeLivraison) {
        this.telFixeLivraison = telFixeLivraison;
    }

    public String getTelMobileLivraison() {
        return telMobileLivraison;
    }

    public void setTelMobileLivraison(String telMobileLivraison) {
        this.telMobileLivraison = telMobileLivraison;
    }

    public EtatLivraison getEtatLivraison() {
        return etatLivraison;
    }

    public void setEtatLivraison(EtatLivraison etatLivraison) {
        this.etatLivraison = etatLivraison;
    }

    public String getModeLivraison() {
        return modeLivraison;
    }

    public void setModeLivraison(String modeLivraison) {
        this.modeLivraison = modeLivraison;
    }

    public Integer getIdSite() {
        return idSite;
    }

    public void setIdSite(Integer idSite) {
        this.idSite = idSite;
    }

    public List<LigneCommandeStock> getLignes() {
        return lignes;
    }

    public void setLignes(List<LigneCommandeStock> lignes) {
        this.lignes = lignes;
    }

    @Override
    public String toString() {
        return "CommandeStock{" + "id=" + id + ", dateCreation=" + dateCreation + ", dateLivraison=" + dateLivraison + ", civiliteLivraison=" + civiliteLivraison + ", nomLivraison=" + nomLivraison + ", prenomLivraison=" + prenomLivraison + ", adresseLivraison=" + adresseLivraison + ", codePostalLivraison=" + codePostalLivraison + ", villeLivraison=" + villeLivraison + ", telFixeLivraison=" + telFixeLivraison + ", telMobileLivraison=" + telMobileLivraison + ", etatLivraison=" + etatLivraison + ", modeLivraison=" + modeLivraison + ", idSite=" + idSite + '}';
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 47 * hash + (this.id != null ? this.id.hashCode() : 0);
        hash = 47 * hash + (this.dateCreation != null ? this.dateCreation.hashCode() : 0);
        hash = 47 * hash + (this.dateLivraison != null ? this.dateLivraison.hashCode() : 0);
        hash = 47 * hash + (this.civiliteLivraison != null ? this.civiliteLivraison.hashCode() : 0);
        hash = 47 * hash + (this.nomLivraison != null ? this.nomLivraison.hashCode() : 0);
        hash = 47 * hash + (this.prenomLivraison != null ? this.prenomLivraison.hashCode() : 0);
        hash = 47 * hash + (this.adresseLivraison != null ? this.adresseLivraison.hashCode() : 0);
        hash = 47 * hash + (this.codePostalLivraison != null ? this.codePostalLivraison.hashCode() : 0);
        hash = 47 * hash + (this.villeLivraison != null ? this.villeLivraison.hashCode() : 0);
        hash = 47 * hash + (this.telFixeLivraison != null ? this.telFixeLivraison.hashCode() : 0);
        hash = 47 * hash + (this.telMobileLivraison != null ? this.telMobileLivraison.hashCode() : 0);
        hash = 47 * hash + (this.etatLivraison != null ? this.etatLivraison.hashCode() : 0);
        hash = 47 * hash + (this.modeLivraison != null ? this.modeLivraison.hashCode() : 0);
        hash = 47 * hash + (this.idSite != null ? this.idSite.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final CommandeStock other = (CommandeStock) obj;
        if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
            return false;
        }
        if (this.dateCreation != other.dateCreation && (this.dateCreation == null || !this.dateCreation.equals(other.dateCreation))) {
            return false;
        }
        if (this.dateLivraison != other.dateLivraison && (this.dateLivraison == null || !this.dateLivraison.equals(other.dateLivraison))) {
            return false;
        }
        if ((this.civiliteLivraison == null) ? (other.civiliteLivraison != null) : !this.civiliteLivraison.equals(other.civiliteLivraison)) {
            return false;
        }
        if ((this.nomLivraison == null) ? (other.nomLivraison != null) : !this.nomLivraison.equals(other.nomLivraison)) {
            return false;
        }
        if ((this.prenomLivraison == null) ? (other.prenomLivraison != null) : !this.prenomLivraison.equals(other.prenomLivraison)) {
            return false;
        }
        if ((this.adresseLivraison == null) ? (other.adresseLivraison != null) : !this.adresseLivraison.equals(other.adresseLivraison)) {
            return false;
        }
        if ((this.codePostalLivraison == null) ? (other.codePostalLivraison != null) : !this.codePostalLivraison.equals(other.codePostalLivraison)) {
            return false;
        }
        if ((this.villeLivraison == null) ? (other.villeLivraison != null) : !this.villeLivraison.equals(other.villeLivraison)) {
            return false;
        }
        if ((this.telFixeLivraison == null) ? (other.telFixeLivraison != null) : !this.telFixeLivraison.equals(other.telFixeLivraison)) {
            return false;
        }
        if ((this.telMobileLivraison == null) ? (other.telMobileLivraison != null) : !this.telMobileLivraison.equals(other.telMobileLivraison)) {
            return false;
        }
        if (this.etatLivraison != other.etatLivraison) {
            return false;
        }
        if ((this.modeLivraison == null) ? (other.modeLivraison != null) : !this.modeLivraison.equals(other.modeLivraison)) {
            return false;
        }
        if (this.idSite != other.idSite && (this.idSite == null || !this.idSite.equals(other.idSite))) {
            return false;
        }
        return true;
    }

    
}
